package tool

import (
	"MoSkeleton/framework/core/models"
)

type GenTableColumn struct {
	models.MoModel
	TableId       uint64 `gorm:"column:table_id;type:BIGINT;" json:"tableId,string"`
	ColumnName    string `gorm:"column:column_name;type:VARCHAR(100);" json:"columnName"`
	ColumnComment string `gorm:"column:column_comment;type:VARCHAR(100);" json:"columnComment"`
	ColumnType    string `gorm:"column:column_type;type:VARCHAR(100);" json:"columnType"`
	GoType        string `gorm:"column:go_type;type:VARCHAR(32);" json:"goType"`
	GoFieldName   string `gorm:"column:go_field_name;type:VARCHAR(100);" json:"goFieldName"`
	JsonFieldName string `gorm:"column:json_field_name;type:VARCHAR(100);" json:"jsonFieldName"`
	IsPk          string `gorm:"column:is_pk;type:CHAR(1);" json:"isPk"`
	IsIncrement   string `gorm:"column:is_increment;type:CHAR(1);" json:"isIncrement"`
	IsRequired    string `gorm:"column:is_required;type:CHAR(1);" json:"isRequired"`
	IsInsert      string `gorm:"column:is_insert;type:CHAR(1);" json:"isInsert"`
	IsEdit        string `gorm:"column:is_edit;type:CHAR(1);" json:"isEdit"`
	IsList        string `gorm:"column:is_list;type:CHAR(1);" json:"isList"`
	IsQuery       string `gorm:"column:is_query;type:CHAR(1);" json:"isQuery"`
	QueryType     string `gorm:"column:query_type;type:VARCHAR(200);" json:"queryType"`
	HtmlType      string `gorm:"column:html_type;type:VARCHAR(200);" json:"htmlType"`
	DictType      string `gorm:"column:dict_type;type:VARCHAR(200);" json:"dictType"`
	Sort          int32  `gorm:"column:sort;type:INT;" json:"sort"`
	CreatedBy     string `gorm:"column:created_by;type:VARCHAR(64);" json:"createdBy"`
	UpdatedBy     string `gorm:"column:updated_by;type:VARCHAR(64);" json:"updatedBy"`
}

// information_schema.columns
type GenTableColumnScheme struct {
	TableName     string `json:"tableName" gorm:"column:table_name"`
	ColumnName    string `json:"columnName" gorm:"column:column_name"`
	IsRequired    string `json:"isRequired" gorm:"column:is_required"`
	IsPk          string `json:"isPk" gorm:"column:is_pk"`
	Sort          int32  `json:"sort" gorm:"column:sort"`
	ColumnComment string `json:"columnComment" gorm:"column:column_comment"`
	IsIncrement   string `json:"isIncrement" gorm:"column:is_increment"`
	ColumnType    string `json:"columnType" gorm:"column:column_type"`
}

func (b *GenTableColumn) TableName() string {
	return "gen_table_column"
}
